package egovframework.npqs.pqi.mobile.util;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.Gravity;
import android.widget.Toast;

import com.sds.mobile.servicebrokerLib.ServiceBrokerLib;
import com.sds.mobile.servicebrokerLib.event.ResponseEvent;
import com.sds.mobile.servicebrokerLib.event.ResponseListener;

import egovframework.npqs.pqi.mobile.AppStatus;

public class requestOnServer {
	
	private AppStatus myapp;
	private Context context;
	// 프로그레스바
    ProgressDialog mProgressDialog;
    // 호출 결과값 저장
    private String mResult;
    
    public requestOnServer(Context context){
    	this.context = context;
    	myapp = (AppStatus) context.getApplicationContext();
    }

	/*public void serviceBroker() {
        //ServiceBrokerLib 클래스 객체 생성과 종류 후 실행할 명령 등록
        ServiceBrokerLib lib = new ServiceBrokerLib(new ResponseListener() {

            public void receive(ResponseEvent re) {
                //서버로부터 받은 응답은 ResponseEvent 객체 re에 저장된다.
                int errorCode = re.getResultCode();
                String errorMsg = re.getResultData();
                //에러코드와 결과를 토스트로 보여줌.
                mProgressDialog.dismiss();
                //ReceiveToastMsg(errorCode, errorMsg);
            }
        });
        Log.d("Service Broker", "ServiceBrokerLib 객체 생성, receive 등록");

        //semp 접속에 필요한 parameter들을 intent에 담아서 전송한다. Service Broker Library 실행
        Intent intent = new Intent();
        intent.putExtra("connectionType", "http"); 	 		// 행정용 앱에서는 항상 "http"로 고정
        intent.putExtra("ipAddress", "127.0.0.1");  		// 행정용 앱에서는 항상 "127.0.0.1" 로 고정
        intent.putExtra("portNumber", "3800");      		// 행정용 앱에서는 항상 "3800" 으로 고정
        intent.putExtra("contextUrl", "semp");      		// 행정용 앱에서는 항상 "semp" 로 고정
        intent.putExtra("dataType", "json");        		// 행정용 앱에서는 json 이나 xml 형식을 사용
        intent.putExtra("paramEncrypted", true);    		// 행정용 앱에서는 항상 true 로 고정
        intent.putExtra("paramCompressee", true);   		// 행정용 앱에서는 항상 true 로 고정
        intent.putExtra("userId", myapp.getmUserId());         		// GPKI CN 값을 입력한다.
        intent.putExtra("timeoutInterval", 30000);  		// 단말과 서버간 network timeout 값이다. 행정용 앱에서는 상황에 맞게 적당한 값을 입력한다. (단위는 ms 이며, 기본값은 30초 ->  30000)
        intent.putExtra("sType", "rest");             		// 행정용 앱에서는 항상 "rest"로 고정. (예제에서만 db를 사용했다.)
        intent.putExtra("sCode", "CG24_MAFRA_QIA");  		// 발급받은 테스트   service id(MAFRA_QUARANTINE_TEST)를 입력한다.
        													// 발급받은 운용서버 service id(CG24_MAFRA_QIA)
        intent.putExtra("parameter", " ");          		// 행망 내에 위치한 기간계에 post 로 전달할 값을 입력한다.
        
        // Service Broker Request
        lib.request(intent);
        Log.d("Service Broker", "SEMP service 요청");
    }*/
	
	/*
     * Service Broker 의 receive 결과를 토스트 메시지로 보여준다.
     */
   /* private void ReceiveToastMsg(int errorCode, String errorMsg) {
        String explain = null;

        //에러코드에 따른 설명을 보여주는 구문
        switch (errorCode) {
            case 0:
                errorMsg = "SUCCESS \nResultData : " + errorMsg;
                explain = "성공";
                Log.d("Service Broker", "SEMP 연결 성공");
                break;
            case 1:
                explain = "서비스가 존재하지 않는 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 2:
                explain = "서비스 브로커가 보내는 암호 코드가 잘못된 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 3:
                explain = "사용자 정보 혹은 서비스 정보가 부족한 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 4:
                explain = "사용자 권한이 없는 서비스로 접근 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 5:
                explain = "현재 인증서가 유효하지 않는 경우 발생하는 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 9:
                explain = "기타 Request 처리 부분에서 발생하는 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 10:
                explain = "파일 다운로드시 파일을 읽을 수 없음";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 11:
                explain = "파일 첨부시 발생 한 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 12:
                explain = "파일 다운로드시 발생 한 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 101:
                explain = "SAP Backend 서버 접속 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 102:
                explain = "BAPI 호출 시 잘못된 파라메터 전송 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 103:
                explain = "SAP Connector에서 발생한 일반적인 오류(관리자 확인)";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 200:
                explain = "DB Connector에서 발생한 일반적인 오류(관리자 확인)";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 900:
                explain = "사용자 인증시 파리미터가 부족한 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 901:
                explain = "등록되지 않은 사용자";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 902:
                explain = "사용자 인증 오류(전화번호)";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 903:
                explain = "사용자 인증 오류(사용자 정보 - 암호)";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 904:
                explain = "Provision시 발생하는 사용자 인증관련 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case -100:
                explain = "모바일의 네트워크가 사용 불가능 할 때의 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case -101:
                explain = "서비스 브로커 호출시 Mode를 offline으로 지정하였을 경우의 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case -102:
                explain = "서비스 브로커 호출시 User ID를 입력하지 않을 경우의 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case -103:
                explain = "서비스 브로커 호출시 서비스 코드를 입력하지 않을 경우의 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case -104:
                explain = "서비스 브로커 호출시 서버 주소를 지정하지 않을 경우의 오류";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case -107:
                explain = "서비스 브로커 호출에서 서버 연결 중 timeout 발생";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case -108:
                explain = "서비스 브로커 에서 서버 연결 시도 중 예외상황 발생";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case -109:
                explain = "서비스 브로커 실행 중 예상치 못한 예외 상황 발생";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
            case 403:
            case 404:
            case 500:
                explain = "서버 페이지 오류(HTTP 오류코드)";
                Log.d("Service Broker", "SEMP 연결 실패");
                break;
        }
        mResult = "오류코드 : " + errorCode + "\n오류메시지 : " + errorMsg + "\n설명 : " + explain;
        //reesultToast();
    }*/
    
    /**
     * 결과값 출력
     * @param result
     */
    /*private void reesultToast() {
        runOnUiThread(new Runnable() {

            public void run() {
                Toast toast = Toast.makeText(getApplicationContext(), mResult, Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER, 0, 50);
                toast.show();
            }
        });
    }*/
	
}
